package com.zs.propertymanage.controller;

import com.zs.propertymanage.annotation.SystemLog;
import com.zs.propertymanage.dataObj.R;
import com.zs.propertymanage.dataObj.entity.PatrolPlan;
import com.zs.propertymanage.service.impl.PatrolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/patrol")
@CrossOrigin
public class PatrolController {

    @Autowired
    private PatrolService patrolService;

    // 巡查任务

    /**
     * 获取巡查任务
     *
     * @param search      搜索参数
     * @param currentPage 当前页
     * @param pageSize    每页显示数量
     * @return 巡查任务列表
     */
    @GetMapping("/task")
    @ResponseBody
    public R getPatrolTask(String search, Integer currentPage, Integer pageSize) {
        return patrolService.getPatrolTask(search, currentPage, pageSize);
    }

    /**
     * 修改巡查任务关闭状态
     *
     * @param id 任务id
     * @return 处理结果
     */
    @PutMapping("/task/switchCloseStatus/{id}")
    @ResponseBody
    @SystemLog(name = "修改巡查任务关闭状态")
    public R switchTaskCloseStatus(@PathVariable String id) {
        return patrolService.switchTaskCloseStatus(id);
    }

    /**
     * 根据员工id获取巡查任务列表
     *
     * @param employeeId  员工id
     * @param search      搜索参数
     * @param currentPage 当前页
     * @param pageSize    每页条数
     * @return 查询结果
     */
    @GetMapping("/employeeTask/{employeeId}")
    @ResponseBody
    public R getPatrolTaskByEmployeeId(@PathVariable String employeeId, String search, Integer currentPage, Integer pageSize) {
        return patrolService.getPatrolTaskByEmployeeId(employeeId, search, currentPage, pageSize);
    }

    /**
     * 处理巡查任务
     *
     * @return 处理结果
     */
    @PutMapping("/handleTask")
    @ResponseBody
    @SystemLog(name = "处理巡查任务")
    public R handleTask(@RequestBody Map<String, String> params) {
        String taskId = params.get("taskId");
        String handleRemark = params.get("handleRemark");
        return patrolService.handleTask(taskId, handleRemark);
    }


    // 巡查计划

    /**
     * 获取巡查计划
     *
     * @param search      搜索参数
     * @param currentPage 当前页
     * @param pageSize    每页显示数量
     * @return 巡查任务列表
     */
    @GetMapping("/plan")
    @ResponseBody
    public R getPatrolPlan(String search, Integer currentPage, Integer pageSize) {
        return patrolService.getPatrolPlan(search, currentPage, pageSize);
    }

    /**
     * 添加巡查计划
     *
     * @param patrolPlan 巡查计划(duty待处理)
     * @return 处理结果
     */
    @PostMapping("/plan")
    @ResponseBody
    @SystemLog(name = "添加巡查计划")
    public R addPatrolPlan(@RequestBody PatrolPlan patrolPlan) {
        return patrolService.addPatrolPlan(patrolPlan);
    }

    /**
     * 根据id删除巡查计划
     *
     * @param id 计划id
     * @return 处理结果
     */
    @DeleteMapping("/plan/{id}")
    @ResponseBody
    @SystemLog(name = "删除巡查计划")
    public R deletePatrolPlan(@PathVariable String id) {
        return patrolService.deletePatrolPlan(id);
    }

    /**
     * 修改巡查计划
     *
     * @param patrolPlan 巡查计划(duty待处理)
     * @return 处理结果
     */
    @PutMapping("/plan")
    @ResponseBody
    @SystemLog(name = "修改巡查计划")
    public R updatePatrolPlan(@RequestBody PatrolPlan patrolPlan) {
        return patrolService.updatePatrolPlan(patrolPlan);
    }

    // 根据巡查计划id获取职责人员列表
    @GetMapping("/plan/duty/{planId}")
    @ResponseBody
    public R getPatrolPlanEmployeeList(@PathVariable String planId) {
        return patrolService.getPatrolPlanDuty(planId);
    }

}
